iT邦幫忙

2023 iThome 鐵人賽

DAY 3
0

Hello, 各位 iT 邦幫忙 的粉絲們大家好~~~

在本系列文會延續 Re: 從零改用 .NET MAUI 技術來繼續過去用 Xamarin 技術開發的一個 App : TopStore 使用 .NET MAUI 技術所建立的 TopStore App ,更新 .NET MAUI 在 .NET 6 轉換到 .NET 7 時所需要調整的部分,並持續地的開發 TopStore App 其他需要的功能。

本篇是 Re: 從零續用 .NET MAUI 技術開發過去的一個 App : TopStore 系列 系列文的 EP03。


在經過前兩篇的專案設定調整後,本 EP 就要來繼續處理 TopStoreApp 的 訂單 畫面了。

根據原 TopStoreApp 的設計,在訂單頁面的畫面會是呈現某日有多少筆訂單的呈現效果,然後供使用者點選前往觀看該日的訂單資訊。

原 TopStoreApp 的 Order 畫面

所以如果要完成此 "某日有多少筆訂單的呈現" 在 OrdersPage 上的話,最直接的就是設計一個 Model 跟在之前的 MockData 當中透過此 Model 設定一個集合後,再讓 OedersPage 透過其 ViewModel 去繫結。

首先,在 TopStoreApp 專案當中的 Models 設計一個類別 SummaryOrder,並撰寫下列程式碼:

using CommunityToolkit.Mvvm.ComponentModel;

namespace TopStoreApp.Models;

[INotifyPropertyChanged]
public partial class SummaryOrder
{
    public DateTime Summary { get; set; }

    public int Count { get; set; }
}

結果如下圖:
02

接著再找到 TopStoreApp 專案當中的 MockData 類別,在其中增加以下三段程式碼:

private readonly ObservableCollection<Models.SummaryOrder> summaryOrders;
summaryOrders = new ObservableCollection<Models.SummaryOrder>()
{
    new Models.SummaryOrder { Summary = DateTime.Parse("2023/08/04") , Count = 9 },
    new Models.SummaryOrder { Summary = DateTime.Parse("2023/08/03") , Count = 7 },
    new Models.SummaryOrder { Summary = DateTime.Parse("2023/08/02") , Count = 5 },
    new Models.SummaryOrder { Summary = DateTime.Parse("2023/08/01") , Count = 3 },
    new Models.SummaryOrder { Summary = DateTime.Parse("2023/07/31") , Count = 4 },
};
public ObservableCollection<Models.SummaryOrder> GetSummaryOrders(DateTime? dateTime = null)
{
    return summaryOrders;
}

結果如下圖:
03

由於在先前的為了能夠在假資料(MockData)與真實資料(SQLiteDB)中切換,有做一些特殊的規劃與設計,有興趣的朋友請參考 Re: 從零改用 .NET MAUI 技術來繼續過去用 Xamarin 技術開發的一個 App : TopStore 的文章內容。

因此在這邊為了延續此切換設計,就來在 IDataService 當中設計 GetSummaryOrders 的介面方法宣告,並暫時在 DataService 當中先寫上未完成實作的方法。

在 IDatatService 介面中:

ObservableCollection<Models.SummaryOrder> GetSummaryOrders(DateTime? dateTime = null);

結果如下圖:
04

在 DatatService 類別中:

public ObservableCollection<SummaryOrder> GetSummaryOrders(DateTime? dateTime = null)
{
    throw new NotImplementedException();
}

結果如下圖:
05

好的,下一回就來設計 OrderPages 與其 ViewModel 囉~~~


上一篇
EP02
下一篇
EP04
系列文
Re: 從零續用 .NET MAUI 技術開發過去的一個 App : TopStore 系列30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言